#include <stdio.h> //stdandard imput output :标准输入输出流

/*
  +1 ： 0000 0001
  -1 ： 1000 0001  原码
        1111 1110  反码：将原码除符号位之外的位取反
        1111 1111  补码：反码+1
    符号位不参与取反，参与计算
    正数的原码、反码和补码都是本身
    计算机任何数据都是以补码形式存在
*/
int main() //程序入口
{
    //输出函数：将数据输出到终端
    //1：格式：输出数据的形式
    //%d ： 整型数据
    //%c ： 字符数据
    //\n : 换行符（回车）
    //2：输出的数据的值

    //变量：不能以数字开头
    //sizeof : 计算一个变量的大小
    //int : 整型数据（整数)，占4字节空间
    //将数据的最高位作为符号位，0 ： 正数；    1 ： 负数。
    //unsigned : 无符号
    //unsigned int a = 10;
    //char b = 'a';
    //int a = b;窄转宽
    int a = 128;
    printf("%d\n",sizeof(a));//字节

    //char ：字符型数据,占1字节空间
    //char ：-2^7——2^7-1(-128——127)
    //'0' : 48, 'A' : 65, 'a' : 97
    char b = 'a';
    printf("%d\n",sizeof(b));

    //short : 短整型（2字节）
    //有符号：65535， 无符号：32767
    short c = 10;
    printf("%d\n",sizeof(c));

    //long : 长整型
    long d = 10;
    printf("%d\n",sizeof(d));

/*
    1个符号位      
    1个指数符号位       -----------------------------
    7个指数位          | 1位 | 1位 | 7位 |   23位    |
    23位阶数           ------------------------------
    f： 1+8+23
    d： 1+11+52

    0111 1111:代表0

*/
    //浮点型数据：近似值 0.2+0.1 ！= 0.3
    //浮点型不允许判断相等，只能判断> <
    float e = 3.14;//单精度 4字节
    double f = 3.14;//双精度 8字节
    printf("%f\n",sizeof(e));//默认输出小数点后6位
    printf("%lf\n",sizeof(f));//要求 精度比较高用lf




    return 0;//返回一个整数
}